Within manufacturing environments, the questions of deciding what products to produce (assuming the environment is capable of producing more than a single product), when to produce them, how much of each to produce and whether to accept new orders for different products must all be weighed against the realities of the various constraints imposed upon and within the environment. For example, a given manufacturing environment that is currently operating at or near its maximum capacity should probably not be weighed down with additional order commitments that require immediate response. On the other hand, a manufacturing environment that is operating with excess capacity is capable of accepting new orders, but it may not be apparent how many orders are capable of being fulfilled within a specified time frame.
The process of job order scheduling, which is at the heart of the above dilemma, typically proceeds along a product structure in order to determine which components must be produced and/or purchased and when. This process is time consuming whenever the number of unique orders grows, which is a typical situation in on-demand manufacturing environments. This problem is exacerbated by the historical fashion in which product structures have been separated into bills of material and routings.
To simplify the scheduling problem somewhat, the process is sometimes divided into two aspects: planning and scheduling. The term planning is used to identify those activities, and the relations therebetween, required to accomplish a set of goals. Scheduling then becomes the assignment of specific resources and time windows to the actions identified in the plan. Although the division of the scheduling problem into these two domains is useful, it does present certain problems because of the interdependent nature of planning and scheduling systems.
Complicating this division still further is the idea of introducing order promising. That is, given a work environment (e.g., a manufacturing environment) already burdened with a number of existing job orders, can the environment accept new orders for completion within customer-specified time constraints? Viewed differently, how can the new orders be accepted without disrupting the existing work already scheduled and yet still satisfy a guaranteed delivery time/date? This is a non-trivial complication to the scheduling dilemma because, as others have recognized, although historically price has been a principle factor in choosing a vendor, more and more customers are emphasizing timely (meaning certainly not late and perhaps not even early) delivery in making such decisions.